//
//  CCTabBar.m
//  ccZone
//
//  Created by 陈小娟 on 2017/12/14.
//  Copyright © 2017年 CC. All rights reserved.
//

#import "CCTabBar.h"

@interface CCTabBar()
@property(nonatomic ,weak) UIButton  *addBtn;
@end

@implementation CCTabBar


- (instancetype)initWithFrame:(CGRect)frame{
    if (self = [super initWithFrame:frame]) {
        UIButton *addButton = [[UIButton alloc] init];
        [addButton setBackgroundImage:kTYIMAGE(@"icon_camera_fill") forState:UIControlStateNormal];
        [addButton setBackgroundImage:kTYIMAGE(@"icon_camera_fill") forState:UIControlStateHighlighted];
        //添加响应事件
        [addButton addTarget:self action:@selector(addBtnDidClick) forControlEvents:UIControlEventTouchUpInside];
        [self addSubview:addButton];
        self.addBtn = addButton;
    }
    return self;
}

-(void)addBtnDidClick {
    if (self.ComposeBtnBlock) {
        self.ComposeBtnBlock();
    }
}

- (void)layoutSubviews{
    [super layoutSubviews];
    CGFloat height = self.addBtn.currentBackgroundImage.size.height;
    CGFloat width = self.addBtn.currentBackgroundImage.size.width;
    if (isIPhoneX) {
        self.addBtn.frame = CGRectMake(PORTRAIT_MAIN_SCREEN_W *0.5- width * 0.5, -(0 + height - 50), width, height);
    }else{
         self.addBtn.frame = CGRectMake(PORTRAIT_MAIN_SCREEN_W *0.5- width * 0.5, -(0 + height - self.frame.size.height), width, height);
    }
    
    int btnIndex = 0;
    float kWidth = PORTRAIT_MAIN_SCREEN_W * 0.33;
//    系统自带的按钮类型是UITabBarButton，找出这些类型的按钮，
//    然后重新排布位置，空出中间的位置
    Class class = NSClassFromString(@"UITabBarButton");
    for (UIView *btn in self.subviews) {//遍历TabBar的子控件
        if ([btn isKindOfClass:class]) {
            CGRect rect = btn.frame;
            rect.size.width = kWidth;
            rect.origin.x = kWidth * btnIndex;
            btnIndex++;
            if (btnIndex == 1) {btnIndex++;}
        }
    }
    //将“+”按钮放到视图层次最前面
    [self bringSubviewToFront:self.addBtn];
}

//重写hitTest方法，去监听"+"按钮和“添加”标签的点击，目的是为了让凸出的部分点击也有反应
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    //这一个判断是关键，不判断的话push到其他页面，点击“+”按钮的位置也是会有反应的，这样就不好了
    //self.isHidden == NO 说明当前页面是有TabBar的，那么肯定是在根控制器页面
    //在根控制器页面，那么我们就需要判断手指点击的位置是否在“+”按钮或“添加”标签上
    //是的话让“+”按钮自己处理点击事件，不是的话让系统去处理点击事件就可以了
    if (self.isHidden == NO)
    {
        //将当前TabBar的触摸点转换坐标系，转换到“+”按钮的身上，生成一个新的点
        CGPoint newA = [self convertPoint:point toView:self.addBtn];
        //判断如果这个新的点是在“+”按钮身上，那么处理点击事件最合适的view就是“+”按钮
        if ( [self.addBtn pointInside:newA withEvent:event]){
            return self.addBtn;
        }else{//如果点不在“+”按钮身上，直接让系统处理就可以了
            return [super hitTest:point withEvent:event];
        }
    }
    else
    {
        //TabBar隐藏了，那么说明已经push到其他的页面了，这个时候还是让系统去判断最合适的view处理就好了
        return [super hitTest:point withEvent:event];
    }
}

@end
